leetcodeJS

Personal solution for leetcode problem using Javascript

View on GitHub

Problem

You are given a 0-indexed string s that has lowercase English letters in its even indices and digits in its odd indices.

There is a function shift(c, x), where c is a character and x is a digit, that returns the xth character after c.

For example, shift(‘a’, 5) = ‘f’ and shift(‘x’, 0) = ‘x’.

For every odd index i, you want to replace the digit s[i] with shift(s[i-1], s[i]).

Return s after replacing all digits. It is guaranteed that shift(s[i-1], s[i]) will never exceed ‘z’.

Example 1:

Input: s = “a1c1e1” Output: “abcdef” Explanation: The digits are replaced as follows:

Example 2:

Input: s = “a1b2c3d4e” Output: “abbdcfdhe” Explanation: The digits are replaced as follows:

Constraints:

1 <= s.length <= 100 s consists only of lowercase English letters and digits. shift(s[i-1], s[i]) <= ‘z’ for all odd indices i.

Pre analysis

Seems algorithmic problem. Will generate new string from ASCII code of previous character and current digit.

Another solution

one liner

var replaceDigits = function (s) {
  return s
    .split("")
    .map((x, i) =>
      /[0-9]/.test(x)
        ? (x = String.fromCharCode(s.charCodeAt(i - 1) + Number(x)))
        : x
    )
    .join("");
};